/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.socialfun.servicios;

import com.ec.socialfun.entidades.Local;
import com.ec.socialfun.entidades.LocalesImagen;
import com.ec.socialfun.excepciones.CrearLocalesImagenException;
import com.ec.socialfun.excepciones.RecuperaLocalesImagenException;
import java.util.List;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.jboss.logging.Logger;

/**
 *
 * @author jorge
 */
@Stateless
public class LocalesImagenFacade extends AbstractFacade<LocalesImagen> {

    private static final Logger LOG = Logger.getLogger(LocalesImagenFacade.class.getName());
    @PersistenceContext(unitName = "SocialFunPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public LocalesImagenFacade() {
        super(LocalesImagen.class);
    }

    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void creaImagenesLocal(Local local) throws CrearLocalesImagenException {
        try {
            LocalesImagen localesImagen;
            for (int i = 0; i < 4; i++) {
                localesImagen = new LocalesImagen();
                localesImagen.setLoImRutaFoto("-");
                localesImagen.setLocal(local);
                localesImagen.setLoImOrden(i + 1);
                this.create(localesImagen);
            }
        } catch (Exception e) {
            LOG.error("Error al crear imagenes del local " + e);
            throw new CrearLocalesImagenException("Error al crear Imagenes del Local");
        }
    }

    /**
     * Recupera las imagenes de galeria por el local el orden asignado, el orden
     * puede ser del 1 - 4
     *
     * @param local
     * @param orden
     * @return
     */
    public LocalesImagen recuperaPorLocalYOrden(Local local, Integer orden) throws RecuperaLocalesImagenException {
        try {
            Query q = em.createNamedQuery("LocalesImagen.recuperaPorLocalYOrden");
            q.setParameter("local", local);
            q.setParameter("orden", orden);
            return (LocalesImagen) q.getSingleResult();
        } catch (NoResultException e) {
            LOG.info("No se ha encontrado imagen para el local " + e);
            throw new RecuperaLocalesImagenException("No se ha encontrado imagen para el local");
        }

    }

    /**
     * recupera las imagenes de galeria del local
     *
     * @param local
     * @return
     */
    public List<LocalesImagen> recuperaPorLocal(Local local) {
        Query q = em.createNamedQuery("LocalesImagen.recuperaPorLocal");
        q.setParameter("local", local);
        return q.getResultList();
    }
}
